//
//  ZFBNewFeatureView.m
//  07-新特性案例
//
//  Created by Shenzhen_iOS_07 on 16/9/5.
//  Copyright © 2016年 Shenzhen_iOS_07. All rights reserved.
//

#import "ZFBNewFeatureView.h"
#import "Masonry.h"

@interface ZFBNewFeatureView () <UIScrollViewDelegate>

@property (weak,nonatomic)UIScrollView *scrollView;

@property (weak,nonatomic)UIPageControl *pageCtrl;

@end

@implementation ZFBNewFeatureView

//重写这个视图的构造方法,在构造方法里调用创建UIScrollView和其他控件的方法
-(instancetype)initWithFrame:(CGRect)frame{
    
    if (self = [super initWithFrame:frame]) {
        //调用setupUI
        [self setupUI];
    }
    return self;
}

#pragma mark - 重写数据setter方法
-(void)setImgs:(NSArray *)imgs{
    
    _imgs = imgs;
    
    //准备一个初始frame
    CGRect rect = self.scrollView.bounds;
    
    //取出宽度
    CGFloat width = rect.size.width;
    
    //有多少个数据就循环创建多少个imageView
    for (int i = 0; i < imgs.count; i++) {
        
        UIImageView *iv = [[UIImageView alloc] init];
        iv.frame = CGRectOffset(rect, i * width , 0);
        iv.image = imgs[i];
        
        //> 添加到scrollView
        [self.scrollView addSubview:iv];
    }
    
    //设置scrollView的contentSize 为了在最后一页时还能继续往左滚，所以再加一个页面的滚动宽度
    self.scrollView.contentSize = CGSizeMake((imgs.count+1) * width, 0);
    
    //设置分页指示器的总页数
    self.pageCtrl.numberOfPages = imgs.count;
}


#pragma mark - 点击更多按钮
/**
 button点击事件
 */
-(void)clickMoreButton:(UIButton *)sender{
    
    UIView *v = sender.superview;
    
    //放大的倍数
    CGFloat scale = 3.0;
    
    //用动画效果放大v
    [UIView animateWithDuration:1.2 animations:^{
        
        //慢慢放大
        v.transform = CGAffineTransformMakeScale(scale, scale);
        
        //慢慢变透明
        v.alpha = 0;
        
    } completion:^(BOOL finished) {
        
        //动画完成后移除整个新特性界面
        [self removeFromSuperview];
    }];
}

#pragma mark - scrollView的代理方法
/**
 *  当scrollView正在滚动时触发
 */
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{

    //通过此方式可以根据偏移值算出它滚动到第几页了，然后把页码设置给分页指示器(为了让滚动一半以后也能让分页指示器显示下一页，因此我们需要+0.5(相当于四舍五入))
    int page = (scrollView.contentOffset.x / scrollView.bounds.size.width ) + 0.5;
    
    self.pageCtrl.currentPage = page;
    
    //如果是最后一页并且翻出主页面一半，我们就隐藏分页指示器
    self.pageCtrl.hidden = page == self.pageCtrl.numberOfPages;
}

/**
 *  滚动完成事件
 */
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
    
    //获得当前已经滚出去的页数
    int page = scrollView.contentOffset.x / scrollView.bounds.size.width;
    
    //如果是滚出去图片数量页，那么就移除当前的新特性界面
    if (page == self.imgs.count) {
        [self removeFromSuperview];
    }
}

#pragma mark - 初始化控件方法
-(void)setupUI{
    
    //----创建UIScrollView
    UIScrollView *sv = [[UIScrollView alloc] initWithFrame:self.bounds];
    [self addSubview:sv];
    
    //设置效果
    sv.bounces = NO;
    sv.showsHorizontalScrollIndicator = NO;
    sv.showsVerticalScrollIndicator = NO;
    sv.pagingEnabled = YES;
    
    //> 设置当前视图成为scrollView的代理
    sv.delegate = self;
    
    //记录变量
    self.scrollView = sv;
    
    //----创建UIPageControl
    
    UIPageControl *pgCtrl = [[UIPageControl alloc] init];
    
    //>设置属性（总页数）
    pgCtrl.currentPage = 0;
    
    //设置默认颜色
    pgCtrl.pageIndicatorTintColor = [UIColor colorWithWhite:1.0 alpha:0.5];
    //设置当前页颜色
    pgCtrl.currentPageIndicatorTintColor = [UIColor colorWithWhite:1.0 alpha:1.0];
    
    //> 添加到新特性界面
    [self addSubview:pgCtrl];
    
    //> 禁用用户交互
    pgCtrl.userInteractionEnabled = NO;
    
    //> 设置约束（UIPageControl可以根据它自身的内容算出宽度和高度，我们只要给位置）
    [pgCtrl mas_makeConstraints:^(MASConstraintMaker *make) {
        
        make.centerX.equalTo(self);
        make.bottom.equalTo(self).offset(-80);
    }];
    
    //属性记录pageControl
    self.pageCtrl = pgCtrl;
}

@end
